package org.afk.tools;

import static junit.framework.Assert.*;

import org.afk.tools.com.*;
import org.junit.*;

public class ArgumentsTest
{

	private Arguments arguments;

	private void thenArgumentIs(final String key, final String expected)
	{
		assertEquals(expected, this.arguments.get(key));
	}

	private void thenHasArgument(final String key)
	{
		assertTrue(this.arguments.hasArgument(key));
	}

	private void withArguments(final String... parameter)
	{
		this.arguments = new Arguments(parameter);
	}

	@Test
	public void testHasArgument()
	{
		withArguments("-a", "b");
		thenHasArgument("a");
	}

	@Test
	public void testKey()
	{
		withArguments("-a", "-b");
		thenArgumentIs("a", "");
		thenArgumentIs("b", "");
	}

	@Test
	public void testKeyValue()
	{
		withArguments("-a", "b");
		thenArgumentIs("a", "b");
	}

	@Test
	public void testMix()
	{
		withArguments("a", "-b", "c", "-d", "-e");
		thenArgumentIs("1", "a");
		thenArgumentIs("b", "c");
		thenArgumentIs("d", "");
		thenArgumentIs("e", "");
	}

	@Test
	public void testValue()
	{
		withArguments("a", "b", "c");
		thenArgumentIs("1", "a");
		thenArgumentIs("2", "b");
		thenArgumentIs("3", "c");
	}

}
